Ruby 日記 39日目: ブロック引数を受け取るメソッド
#Ruby_日記 #2021-10-05
https://rex.libertyfish.co.jp/exam_histories/42141/user_answers/aa245e68-b01c-4757-a84d-c9f317f1b7b4
次のプログラムを実行するとどうなりますか
code:gold/ex39/main.rb
val = 100
def method(val)
yield(15 + val)
end
_proc = Proc.new{|arg| val + arg }
p method(val, &_proc)
選択肢:
130と表示される
200と表示される
115と表示される
215と表示される
解説:
類似問題は
Ruby 日記 22日目: ブロック付きメソッドに対して Proc オブジェクトを & をつけて渡す
かな
正解は「215と表示される」だね
code:sh
# ruby gold/ex39/main.rb
215
/icons/hr.icon
トップレベルの val = 100 が地味にわかりにくくしている感があるな
書き換えると、こうだよね。
code:gold/ex39/sample01.rb
def method(val)
yield(15 + val)
end
_proc = Proc.new{|arg| 100 + arg }
p method(100, &_proc)
さらに書き換えると、こう。
code:gold/ex39/sample02.rb
def method(val)
yield(15 + val)
end
p method(100){|arg| 100 + arg }
yield(15 + 100) → yield(115) → 100 + 115 → 215 という感じね